#ifndef STRUCTURES_H
#define STRUCTURES_H

#define YES 1
#define NO  0

/* Typy krzywych, ktore sa zaimplementowane. */
#define CT_BEZIER 0
#define CT_NURBS  1

/* Pole bitowe zawierajace opcje wiswietlania krzywej. */
struct curve_options
{
    unsigned int draw_control_points   : 1;
    unsigned int draw_control_polyline : 1;
    unsigned int draw_curve            : 1;
};

/* Do pokolorowania punktu, ktory jest wlasnie przesuwany. */
struct point_move
{
    int index;
    int mouseOverColor[3];
    int mousePressedColor[3];
};

/* Do zaznaczenia calej krzywej, ktora jest wlasnie edytowana. */
struct curve_selection
{
    double coordinates[4];
    int selection_color[3];
    int selection_border_color[3];
};

struct selection
{
    int curve_type;
    int curve_index;
    int control_point_index;
};

enum state { ZERO, MOVING };

#endif // STRUCTURES_H
